package org.stvd.service.common;

import java.util.List;
import java.util.Map;

import org.stvd.common.utils.ServiceResult;
import org.stvd.core.dto.QueryResult;
import org.stvd.entities.common.CodeTable;

/**
 * 公共码表Service接口类
 * @author houzx
 */
public interface CodeTableService {

    /**
     * 根据条件获取对象信息
     * @param tableName 表名
     * @param id 主键ID
     * @return
     * @throws Exception
     */
    CodeTable findById(String tableName, String id) throws Exception;
    
    /**
     * 根据条件获取列表信息
     * @param tableName 表名
     * @return
     * @throws Exception
     */
    List<CodeTable> findAll(String tableName) throws Exception;
    
    /**
     * 根据条件获取列表信息
     * @param tableName 表名
     * @param id 主键ID
     * @param name 名称
     * @param pym 拼音码
     * @return
     * @throws Exception
     */
    List<CodeTable> findAll(String tableName, String id, String name, String pym) throws Exception;
    
    /**
     * 插入一条数据
     * @param tableName 表名
     * @param id 主键ID
     * @param name 名称
     * @param pym 拼音码
     * @param pxh 排序号
     * @return
     * @throws Exception
     */
    int insert(String tableName, String id, String name, String pym, int pxh) throws Exception;
    
    /**
     * 更新一条数据
     * @param tableName 表名
     * @param id 主键ID
     * @param name 名称
     * @param pym 拼音码
     * @param pxh 排序号
     * @return
     * @throws Exception
     */
    int update(String tableName, String id, String name, String pym, int pxh) throws Exception;
    
    /**
     * 删除一条数据
     * @param tableName 表名
     * @param id 主键ID
     * @return
     * @throws Exception
     */
    int delete(String tableName, String id) throws Exception;
    
    /**
     * 根据条件查询集合
     * @param tableName 表名
     * @param start 起始数
     * @param limit 限制数
     * @param id 主键ID
     * @param name 名称
     * @param pym 拼音码
     * @return
     * @throws Exception
     */
    QueryResult<CodeTable> getQueryResult(String tableName, int start, int limit, String id, String name, String pym) throws Exception;
    
    /**
     * 根据正则条件匹配列表
     * @param listAll 带匹配的列表
     * @param regex 正则表达式字符串
     * @return
     */
    List<CodeTable> getCodeTableListByRegExp(List<CodeTable> listAll, String regex);
    
    /**
     * @Description: 查询码表信息列表
     * @return
     */
    List<Map<String, Object>> listAllCodeTable(String tableName);
    
    /**
     * @Description:根据名称查询码表信息
     * @param tableName
     * @return
     */
    Map<String, Object> getCodeTableByName(String tableName);
    
    /**
     * @Description: 新增码表信息
     * @param codeTable
     * @return
     */
    ServiceResult<Map<String, Object>> insertCodeTableType(CodeTable codeTable);
    
    /**
     * @Description: 更新码表信息
     * @param codeTable
     * @return
     */
    ServiceResult<Map<String, Object>> updateCodeTableType(CodeTable codeTable);
    
    /**
     * @Description: 删除码表信息
     * @param id 码表ID
     * @return
     */
    ServiceResult<Map<String, Object>> deleteCodeTableType(String id);
}
